Есть желание использовать современные языковые фитчи, но переписывать код в ручную долго и скучно, тогда можно воспользоваться помощью искусственного интеллекта😄
Для того чтобы сделать свой код более современным используй следующий промпт:
Refactor the following code to modern [Тут напиши стандарт] programming standards:
[Сюда вставь свой код]
Refactor the following code to modern c++23 programming standards:
int* createIntArray(int size) {
int* arr = new int[size];
for (int i = 0; i < size; ++i) {
arr[i] = i * i;
}
return arr;
}
#include <memory>
#include <vector>
#include <algorithm>
// Option 1: Return a std::vector (recommended for most cases)
auto createIntArray(int size) -> std::vector<int> {
std::vector<int> arr(size);
std::ranges::generate(arr, [i = 0]() mutable { return i * i++; });
return arr;
}
// Option 2: Return a std::unique_ptr (if you specifically need heap allocation)
auto createIntArrayUnique(int size) -> std::unique_ptr<int[]> {
auto arr = std::make_unique<int[]>(size);
for (int i = 0; i < size; ++i) {
arr[i] = i * i;
}
return arr;
}
Это достаточно простой и быстрый способ привести код к текущему стандарту. К сожалению результат работы промпта всё де придётся проверить, так как текущая реализация AI далека от идеала, но даже так времени можно сэкономить массу.
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😱 Любителям x86-64 assembler посвящается: DIY волокна в C++
💡 Автор статьи погружается в захватывающий мир волокон в C++ и показывает, как реализовать их без поддержки компилятора с помощью ассемблерных вставок.
❗ Ключевые моменты статьи:
• волокна — наименьшая единица исполнения, невидимая для ядра ОС
• переключение контекста происходит через
• различия реализации для 32- и 64-битных систем
Основной фокус — практическая реализация своих собственных волокон с детальным разбором управления стеком, переключения контекста и жизненного цикла волокна от создания до завершения.
Статья будет особенно полезна C++ разработчикам, интересующимся низкоуровневым программированием и оптимизацией производительности без использования системных вызовов.
Вы узнаете, как избежать дорогостоящих переключений между
Библиотека C/C++ разработчика #буст
💡 Автор статьи погружается в захватывающий мир волокон в C++ и показывает, как реализовать их без поддержки компилятора с помощью ассемблерных вставок.
❗ Ключевые моменты статьи:
• волокна — наименьшая единица исполнения, невидимая для ядра ОС
• переключение контекста происходит через
yield()
без обращения к ядру• различия реализации для 32- и 64-битных систем
Основной фокус — практическая реализация своих собственных волокон с детальным разбором управления стеком, переключения контекста и жизненного цикла волокна от создания до завершения.
Статья будет особенно полезна C++ разработчикам, интересующимся низкоуровневым программированием и оптимизацией производительности без использования системных вызовов.
Вы узнаете, как избежать дорогостоящих переключений между
user space
и kernel space
, но помните — с большой силой приходит большая ответственность: неправильная работа со стеком может привести к непредсказуемым последствиям в вашей программе.Библиотека C/C++ разработчика #буст
С++ Книги - канал для скачивания книг по C++
Что в нашем канале:
1. Книги по C++
2. Много книг на русском языке
3. Описания книг, автор, год выпуска
4. Все книги можно скачать в 2 клика.
5. Всё, никакой другой воды.
Подписывайтесь на нас: @download_c_books
Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzqxkzQGt
Что в нашем канале:
1. Книги по C++
2. Много книг на русском языке
3. Описания книг, автор, год выпуска
4. Все книги можно скачать в 2 клика.
5. Всё, никакой другой воды.
Подписывайтесь на нас: @download_c_books
Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzqxkzQGt
📱 Кроссплатформенная разработка: что предпочитаете?
Часто приходит в голову идея написать классное приложение под десктоп, с приятным
А) Нативные решения для каждой платформы
Б) Фреймворки типа Qt/wxWidgets
В) Веб-технологии (Electron и подобные)
Г) Flutter/React Native для мобильных
Д) Другой подход
✍️ Расскажите о своем опыте с выбранным подходом. С какими проблемами столкнулись? Что порекомендуете новичкам?
Библиотека C/C++ разработчика #междусобойчик
Часто приходит в голову идея написать классное приложение под десктоп, с приятным
GUI
, но всегда приходится выбирать пользоваться нативными решениями или искать кроссплатформенные фреймворки.А) Нативные решения для каждой платформы
Б) Фреймворки типа Qt/wxWidgets
В) Веб-технологии (Electron и подобные)
Г) Flutter/React Native для мобильных
Д) Другой подход
✍️ Расскажите о своем опыте с выбранным подходом. С какими проблемами столкнулись? Что порекомендуете новичкам?
Библиотека C/C++ разработчика #междусобойчик
🚨 Смешные новости про IT теперь в одном канале
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
🧑💻 Множественное выделение и мультикурсоры в VS Code
Мультикурсоры — это функция
Как использовать:
• Alt+Click — добавить дополнительный курсор в выбранной позиции
• Ctrl+Alt+↑/↓ — добавить курсоры на строках выше/ниже текущей
• Ctrl+D — выделить следующее вхождение текущего выделения
• Alt+Shift+I — добавить курсор в конец каждой выделенной строки
При работе особенно полезно для одновременной замены имён переменных, типов или для добавления логгирования во множество однотипных блоков.
Библиотека C/C++ разработчика #буст
Мультикурсоры — это функция
VS Code
, которая позволяет одновременно редактировать код в нескольких местах файла. Эта техника существенно ускоряет массовое редактирование однотипных фрагментов, например, при переименовании переменных в C++ коде.Как использовать:
• Alt+Click — добавить дополнительный курсор в выбранной позиции
• Ctrl+Alt+↑/↓ — добавить курсоры на строках выше/ниже текущей
• Ctrl+D — выделить следующее вхождение текущего выделения
• Alt+Shift+I — добавить курсор в конец каждой выделенной строки
При работе особенно полезно для одновременной замены имён переменных, типов или для добавления логгирования во множество однотипных блоков.
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 Может среди нас есть любители кроссвордов?
👋 Привет, кодеры. Сегодня у нас небольшой челлендж для C++ разработчиков.
Разгадай наш тематический кроссворд и проверь, насколько хорошо ты знаешь любимый язык программирования! 🤓
По горизонтали:
1. Контейнер типа «ключ-значение»
3. Тип данных для хранения текста
4. Пользовательский тип данных, объединяющий разные переменные
По вертикали:
2. Способность объектов с одинаковым интерфейсом иметь различную реализацию
P.S. Слова на английском языке
Библиотека C/C++ разработчика #междусобойчик
👋 Привет, кодеры. Сегодня у нас небольшой челлендж для C++ разработчиков.
Разгадай наш тематический кроссворд и проверь, насколько хорошо ты знаешь любимый язык программирования! 🤓
По горизонтали:
1. Контейнер типа «ключ-значение»
3. Тип данных для хранения текста
4. Пользовательский тип данных, объединяющий разные переменные
По вертикали:
2. Способность объектов с одинаковым интерфейсом иметь различную реализацию
P.S. Слова на английском языке
Библиотека C/C++ разработчика #междусобойчик
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что выведет код, использующий концепты и requires (C++20)?
Anonymous Quiz
17%
addable
62%
not addable
13%
Ошибка компиляции
8%
Неопределённое поведение
📰 Свеженькое из мира C++
Недельный дайджест новостей о разных аспектах программирования и интересных проектах в мире C++.
🥳 Интересное:
• Любителям x86-64 assembler посвящается: DIY волокна в C++
• Что нового для разработчиков C++ в Visual Studio 2022 17.14
😎 Полезное:
• Модули в C++, проблемы и решения
• Множественное выделение и мультикурсоры в VS Code
🖨 Интересные проекты
- LEGO Island Decompilation
Полная декомиляция игры LEGO Island
- Wazuh v4.12.0
Вышла новая версия open source платформs используемой для предотвращения, обнаружения и реагирования на угрозы. Она способна защищать рабочие нагрузки в локальных, виртуализированных, контейнеризированных и облачных средах.
- QtScrcpy
Отображение и управление устройствами
Библиотека C/C++ разработчика #свежак
Недельный дайджест новостей о разных аспектах программирования и интересных проектах в мире C++.
🥳 Интересное:
• Любителям x86-64 assembler посвящается: DIY волокна в C++
• Что нового для разработчиков C++ в Visual Studio 2022 17.14
😎 Полезное:
• Модули в C++, проблемы и решения
• Множественное выделение и мультикурсоры в VS Code
🖨 Интересные проекты
- LEGO Island Decompilation
Полная декомиляция игры LEGO Island
- Wazuh v4.12.0
Вышла новая версия open source платформs используемой для предотвращения, обнаружения и реагирования на угрозы. Она способна защищать рабочие нагрузки в локальных, виртуализированных, контейнеризированных и облачных средах.
- QtScrcpy
Отображение и управление устройствами
Android
через USB
или по сети. Библиотека C/C++ разработчика #свежак
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что произойдёт при использовании источников диапазонов (C++20)?
Anonymous Quiz
17%
12
51%
34
19%
345
13%
Ошибка компиляции
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Топ-вакансий для C++разработчиков за неделю
Team Lead C++/Rust — 360 000 — 450 000 ₽ Удалёнка
Разработчик C++ — 200 000 — 250 000 ₽ Удалёнка
Разработчик C/С++ — 200 000 — 250 000 ₽ Удалёнка
ML Engineer — 5 000 — 7 000 € Удалёнка
➡️ Еще больше топовых вакансий — в нашем канале C++ jobs
Библиотека C/C++ разработчика #свежак
Team Lead C++/Rust — 360 000 — 450 000 ₽ Удалёнка
Разработчик C++ — 200 000 — 250 000 ₽ Удалёнка
Разработчик C/С++ — 200 000 — 250 000 ₽ Удалёнка
ML Engineer — 5 000 — 7 000 € Удалёнка
➡️ Еще больше топовых вакансий — в нашем канале C++ jobs
Библиотека C/C++ разработчика #свежак
🤓 Как использовать концепты C++20 для создания надежного кода
Устали от непонятных ошибок шаблонов? Концепты спешат на помощь.
❗️ Преимущества:
- Более понятные сообщения об ошибках
- Документирование требований в коде
- Перегрузка на основе свойств типов
Встроенные концепты: std::integral, std::floating_point, std::copyable, std::same_as и другие.
Библиотека C/C++ разработчика #буст
Устали от непонятных ошибок шаблонов? Концепты спешат на помощь.
// ❌ Старый подход без концептов
template<typename T>
T max_value(const std::vector<T>& values) {
// Ошибка будет обнаружена только при инстанциации шаблона
return *std::max_element(values.begin(), values.end());
}
// ✅ Современный подход с концептами
template<typename T>
requires std::totally_ordered<T>
T max_value(const std::vector<T>& values) {
return *std::max_element(values.begin(), values.end());
}
// Еще короче с auto
auto max_value(const std::vector<std::totally_ordered auto>& values) {
return *std::max_element(values.begin(), values.end());
}
- Более понятные сообщения об ошибках
- Документирование требований в коде
- Перегрузка на основе свойств типов
Встроенные концепты: std::integral, std::floating_point, std::copyable, std::same_as и другие.
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😱 Microsoft уволила лучших разработчиков
Microsoft провела очередной раунд массовых сокращений, на этот раз ударив в самое сердце экосистемы разработчиков. В числе уволенных — не просто инженеры, а ключевые фигуры мирового сообщества Python и TypeScript.
В LinkedIn Майк Дрёттбум написал, что Microsoft официально свернула поддержку проекта Faster CPython, а большая часть команды была распущена. Уведомления об увольнении пришли буквально по пути на Python Language Summit.
Потери понёс и мир TypeScript — после 18 лет в Microsoft был уволен Рон Бактон, почти половину этого срока проработавший над развитием TypeScript.
На фоне разговоров об эффективности и инновациях, массовое увольнение одних из лучших разработчиков выглядит как тревожный сигнал.
А что вы думаете по поводу происходящих массовых увольнений? Пишите в комментариях.
👉 Новость
Библиотека C/C++ разработчика #новости
Microsoft провела очередной раунд массовых сокращений, на этот раз ударив в самое сердце экосистемы разработчиков. В числе уволенных — не просто инженеры, а ключевые фигуры мирового сообщества Python и TypeScript.
В LinkedIn Майк Дрёттбум написал, что Microsoft официально свернула поддержку проекта Faster CPython, а большая часть команды была распущена. Уведомления об увольнении пришли буквально по пути на Python Language Summit.
Потери понёс и мир TypeScript — после 18 лет в Microsoft был уволен Рон Бактон, почти половину этого срока проработавший над развитием TypeScript.
На фоне разговоров об эффективности и инновациях, массовое увольнение одних из лучших разработчиков выглядит как тревожный сигнал.
А что вы думаете по поводу происходящих массовых увольнений? Пишите в комментариях.
👉 Новость
Библиотека C/C++ разработчика #новости
⚙️ Valgrind 3.25: мощнее, быстрее, точнее
Пока крупные корпорации сокращают разработчиков и сворачивают проекты, Valgrind — один из главных инструментов для поиска утечек памяти и ошибок в C/C++ — тихо обновился до версии 3.25.1.
❗️Что нового:
✔️ Исправлены критические баги, включая ложные срабатывания в Memcheck
✔️ Улучшена поддержка AVX-512
✔️ Мелкие, но важные фиксы для macOS и Linux
Valgrind — один из тех инструментов, которые десятилетиями остаются незаменимыми для разработчиков, работающих с низкоуровневым кодом. В отличие от корпоративных решений, он живёт благодаря сообществу и продолжает развиваться, несмотря на все тренды.
👉 Полный список изменений
👉 Официальный сайт
Библиотека C/C++ разработчика
Пока крупные корпорации сокращают разработчиков и сворачивают проекты, Valgrind — один из главных инструментов для поиска утечек памяти и ошибок в C/C++ — тихо обновился до версии 3.25.1.
❗️Что нового:
✔️ Исправлены критические баги, включая ложные срабатывания в Memcheck
✔️ Улучшена поддержка AVX-512
✔️ Мелкие, но важные фиксы для macOS и Linux
Valgrind — один из тех инструментов, которые десятилетиями остаются незаменимыми для разработчиков, работающих с низкоуровневым кодом. В отличие от корпоративных решений, он живёт благодаря сообществу и продолжает развиваться, несмотря на все тренды.
👉 Полный список изменений
👉 Официальный сайт
Библиотека C/C++ разработчика
🔬 GoogleTest — полнофункциональный фреймворк для тестирования C++ кода от Google
GoogleTest (GTest) — это мощный и гибкий фреймворк для модульного тестирования C++ кода, разработанный Google. Он предоставляет богатый набор утверждений, фикстур, моков и других инструментов, которые помогают писать эффективные и поддерживаемые тесты для сложных проектов.
✏️ Установка:
☀️ Примеры использования:
🍪 Дополнительные возможности:
— Фикстуры для повторного использования настроек теста
— GoogleMock для создания моков и стабов
— Параметризованные тесты
— Расширенные отчеты о результатах тестирования
⬆️ Параметризованные тесты:
🍴Ссылочки:
👉 GitHub
Библиотека C/C++ разработчика #буст
GoogleTest (GTest) — это мощный и гибкий фреймворк для модульного тестирования C++ кода, разработанный Google. Он предоставляет богатый набор утверждений, фикстур, моков и других инструментов, которые помогают писать эффективные и поддерживаемые тесты для сложных проектов.
# Через vcpkg
vcpkg install gtest
# Через conan
conan install gtest/1.16.0
# Сборка из исходников
git clone https://github.com/google/googletest.git
cd googletest
mkdir build && cd build
cmake ..
cmake --build .
// Базовый тест
#include <gtest/gtest.h>
TEST(StringTest, StringEquality) {
std::string actual = "Hello";
actual += " World";
EXPECT_EQ(actual, "Hello World");
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
— Фикстуры для повторного использования настроек теста
— GoogleMock для создания моков и стабов
— Параметризованные тесты
— Расширенные отчеты о результатах тестирования
class MathTest : public ::testing::TestWithParam<std::tuple<int, int, int>> {};
TEST_P(MathTest, Addition) {
int a = std::get<0>(GetParam());
int b = std::get<1>(GetParam());
int expected = std::get<2>(GetParam());
EXPECT_EQ(a + b, expected);
}
INSTANTIATE_TEST_SUITE_P(
AdditionTests,
MathTest,
::testing::Values(
std::make_tuple(1, 1, 2),
std::make_tuple(5, 3, 8),
std::make_tuple(-1, 1, 0)
)
);
🍴Ссылочки:
👉 GitHub
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM